package com.qf.service.impl;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.qf.entity.Department;
import com.qf.entity.UserEmp;
import com.qf.entity.UserRole;
import com.qf.enumutil.UuidEunm;
import com.qf.mapper.UserEmpMapper;
import com.qf.service.UserEmpService;
import com.qf.utils.UuidUtils;
import org.apache.shiro.crypto.hash.Md5Hash;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import tk.mybatis.mapper.entity.Example;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * 2019/11/20
 * 郭程鹏
 * gcp1909
 * 面向代码面向君,不负时光不负卿
 */
@Service
public class UserEmpImpl implements UserEmpService{

    @Autowired
    private UserEmpMapper userEmpMapper;
    //1、全查 分页 模糊差
    @Override
    public PageInfo<UserEmp> UserEmpPage(Integer page, Integer size,Map<String,String> map) {

        PageHelper.startPage(page,size);

        List<UserEmp> userEmps = userEmpMapper.userEmpList(map);

        PageInfo<UserEmp> empPageInfo = new PageInfo<UserEmp>(userEmps);

        return empPageInfo;
    }

    //修改信息的二级联动前置查询
    @Override
    public List<Department> allDeptName() {
        List<Department> deptNameList = userEmpMapper.allDeptName();
        return deptNameList;
    }
    //预览信息
    @Override
    public UserEmp preUserEmp(Integer id) {
        UserEmp userEmp = userEmpMapper.preUserEmp(id);
        return userEmp;
    }

    //联动角色信息
    @Override
    public List<UserRole> preUserRole(Integer deptId) {
        List<UserRole> userRoles = userEmpMapper.preUserRole(deptId);
        return userRoles;
    }

    //修改员工信息
    @Transactional
    @Override
    public void updateEmp(UserEmp emp) {
        userEmpMapper.updateEmp(emp);
    }

    //异步校验用户名
    @Override
    public Integer checkUserName(String userName) {
        List<String> list = userEmpMapper.checkUserName();
        for (String name : list) {
            //如果有相同的用户名这返回1
            if (name.equals(userName)){
                return 1;
            }
        }
        return 0;
    }
    //添加员工
    @Override
    public int addUserEmp(UserEmp userEmp) {
        Date date = new Date();
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
        //使用UUID+md5对密码加密
        String password = userEmp.getPassword();
        //得到随机盐值
        String salt = UuidUtils.uuidRandom();
        System.out.println("salt:"+salt);
        Md5Hash md5Hash = new Md5Hash(password, salt, UuidEunm.Md5.getMd5());
        //得到新的加密后的密码
        String md5Password=md5Hash.toString();
        System.out.println("mima:"+md5Password);
        System.out.println("次数:"+UuidEunm.Md5.getMd5());
        //将新密码和盐值赋给对象
        userEmp.setPassword(md5Password);
        userEmp.setSalt(salt);
        simpleDateFormat.format(date);
        userEmp.setCreateTime(date);
        int emp = userEmpMapper.addUserEmp(userEmp);
        return emp;
    }

    //cha看用户信息

    @Override
    public UserEmp viewUserEmp(Integer id) {
        UserEmp userEmp = userEmpMapper.viewUserEmp(id);
        return userEmp;
    }



    //删除指定用户信息
    @Override
    public int deleteUserEmpById(Integer id,Integer status) {

        int i = userEmpMapper.deleteUserEmpById(id, status);
        return i;
    }

    //批量删除
    @Override
    public int deleteUserEmpMany(List<Integer> id, Integer status) {
        int i = userEmpMapper.deleteUserEmpMany(id,status);
        return i;
    }

    //导出excle
    @Override
    public List<UserEmp> userList(List<Integer> id) {
        List<UserEmp> userEmps = userEmpMapper.empList(id);
        return userEmps;
    }


}
